home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 10
/
FM Towns Free Software Collection 10.iso
/
ms_dos
/
tool
/
fapxtool
/
src
/
txm
/
txminfo.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-01-06
|
3KB
|
167 lines
/***************
*
* txm\txminfo.c
*/
#include "txm.h"
/* ログファイル1行目を読み込み */
char *preopen(char *buf)
{
FILE *fp;
char *ret;
long fsize;
#if 0
struct sbuf;
/* ここで突然ファイルサイズチェック */
if (stat(logfile, &sbuf) {
return NULL;
}
/* ログファイルが指定条件より小さければ何もしない */
if (sbuf.st_size < ((long)maxrun * 1024)) {
return NULL;
}
#endif
/* printf("preopen()\n"); */
if ((fp = fopen(logfile, "rb")) == NULL) {
return NULL;
}
/* ここで突然ファイルサイズチェック */
fsize = filelength(fileno(fp));
/* ログファイルが指定条件より小さければ何もしない */
if (fsize < ((long)maxrun * 1024)) {
fclose(fp);
return NULL;
}
ret = fgets(buf, 80, fp);
fclose(fp);
return (ret);
}
/* ヘッダチェック(Merged by FAPX) */
int chkheader(char *buf)
{
/* printf("chkheader()\n"); */
if (strstr(buf, "Merged") == NULL) {
return FALSE;
}
return TRUE;
}
/* 情報ファイル名作成 & 会議室番号読み取り */
int makeinfofilename(char *buf)
{
char fname[16];
int no;
/* printf("makeinfofilename()\n"); */
hpflg = FALSE;
strcpy(infofile, txmdir);
if (jstrrchr(infofile, '\\') != (infofile + strlen(infofile) - 1)) {
strcat(infofile, "\\");
}
if (strncmp(buf, "FORUM:", 6) == 0) {
if (sscanf(buf, "FORUM:%8s MES:%2d", fname, &no) < 2) {
return FALSE;
}
}
else if (strncmp(buf, "HP:", 3) == 0) {
hpflg = TRUE;
no = 2;
if (sscanf(buf, "HP:%8s ", fname) < 1) {
return FALSE;
}
}
else if (strncmp(buf, "PATIO:", 6) == 0) {
no = 1;
if (sscanf(buf, "PATIO:%8s ", fname) < 1) {
return FALSE;
}
}
else {
return FALSE;
}
if (no == 0) {
return FALSE;
}
mesno = no;
nowinfo = &(info.mes[mesno]);
strcat(infofile, fname);
strcat(infofile, ".TXM");
/* printf("infofile:%s\n", infofile); */
return TRUE;
}
/* 情報ファイル新規作成 */
void makenewinfo()
{
int i;
/* printf("makenewinfo()\n"); */
for (i = 0; i < 20; i++) {
info.mes[i].version = 0x01; /* バージョン現在はチェック無し */
info.mes[i].ext = 1;
info.mes[i].art = 0;
info.mes[i].ltime.x = 0;
info.mes[i].reserve1 = 0;
info.mes[i].reserve2 = 0;
info.mes[i].reserve3 = 0;
}
}
/* 情報ファイルチェック(無ければ作成) */
int chkinfo()
{
char *kind;
FILE *fp;
/* printf("chkinfo()\n"); */
if ((kind = preopen(line1)) == NULL) {
return FALSE;
}
if (chkheader(kind) == FALSE) {
return FALSE;
}
if (makeinfofilename(kind) == FALSE) {
return FALSE;
}
if (fp = fopen(infofile, "rb")) {
if (fread((char *)(&info), sizeof(TXM), 1, fp) < 1) {
makenewinfo();
}
fclose(fp);
}
else {
makenewinfo();
}
return TRUE;
}
/* 情報ファイル保存 */
int saveinfo()
{
FILE *fp;
/* printf("saveinfo()\n"); */
accessdir(txmdir);
if ((fp = fopen(infofile, "wb")) == NULL) {
return FALSE;
}
if (fwrite((char *)(&info), sizeof(TXM), 1, fp) < 1) {
fclose(fp);
return FALSE;
}
fclose(fp);
return TRUE;
}